<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>
    
    // 电子厂，生产手机和平板，只有一套测试模块
    // 手机的功能：打电话，玩游戏
    // 平板的功能：玩游戏

    // 测试模块尽可能的多测一些功能

    // 适配器只需要适配打电话的功能

    // 创建手机的类
    function createPhone(){
        this.name = "手机"
        this.call = function(){
            console.log(this.name + "打电话")
        }
        this.game = function(){
            console.log(this.name + "玩游戏")
        }
    }
    // 创建平板的类
    function createPad(){
        this.name = "平板"
        this.game = function(){
            console.log(this.name + "玩游戏")
        }
    }
    // 平板专用适配器
    // 主要用于根据平板创建一个临时对象，具有打电话功能，用来通过测试模块的打电话功能测试
    function PadAdaptation(o){
        const o1 = {...o};
        o1.call = function(){
            console.log(o.name + "没有打电话功能");
        }
        return o1;
    }

    // 测试模块
    function test(o){
        o.call();
        o.game();
    }

    // 创建手机和平板
    const phone = new createPhone();
    const pad = new createPad();

    // 交给测试模板测试
    test(phone);
    // 平板在交给测试之前，需要先使用适配器进行包装
    test(PadAdaptation(pad));

    // 观察适配及测试之后的手机和平板
    console.log(phone)
    console.log(pad)




</script>
</html>